package com.zhentao.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zhentao.mapper.IncomeExpenseItemMapper;
import com.zhentao.pojo.IncomeExpenseItem;
import com.zhentao.util.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 收支项目管理接口
 */
@RestController
@RequestMapping("/finance/incomeExpenseItem")
public class IncomeExpenseItemController {

    @Autowired
    private IncomeExpenseItemMapper incomeExpenseItemMapper;

    /**
     * 分页查询收支项目
     */
    @GetMapping("/list")
    public Result<Page<IncomeExpenseItem>> list(
            @RequestParam(name = "pageNum", defaultValue = "1") int pageNum,
            @RequestParam(name = "pageSize", defaultValue = "10") int pageSize,
            IncomeExpenseItem query) {
        Page<IncomeExpenseItem> page = new Page<>(pageNum, pageSize);
        QueryWrapper<IncomeExpenseItem> wrapper = new QueryWrapper<>();
        
        if (query != null) {
            if (StringUtils.hasText(query.getType())) {
                wrapper.eq("type", query.getType());
            }
            if (StringUtils.hasText(query.getName())) {
                wrapper.like("name", query.getName());
            }
            if (query.getTenantId() != null) {
                wrapper.eq("tenant_id", query.getTenantId());
            }
        }
        wrapper.orderByAsc("name");
        
        return Result.success(incomeExpenseItemMapper.selectPage(page, wrapper));
    }

    /**
     * 获取所有收支项目（不分页）
     */
    @GetMapping("/all")
    public Result<List<IncomeExpenseItem>> getAll(IncomeExpenseItem query) {
        QueryWrapper<IncomeExpenseItem> wrapper = new QueryWrapper<>();
        
        if (query != null) {
            if (StringUtils.hasText(query.getType())) {
                wrapper.eq("type", query.getType());
            }
            if (StringUtils.hasText(query.getName())) {
                wrapper.like("name", query.getName());
            }
            if (query.getTenantId() != null) {
                wrapper.eq("tenant_id", query.getTenantId());
            }
        }
        wrapper.orderByAsc("name");
        
        return Result.success(incomeExpenseItemMapper.selectList(wrapper));
    }

    /**
     * 获取收支项目详情
     */
    @GetMapping("/detail/{id}")
    public Result<IncomeExpenseItem> getDetail(@PathVariable Long id) {
        return Result.success(incomeExpenseItemMapper.selectById(id));
    }

    /**
     * 新增收支项目
     */
    @PostMapping("/add")
    public Result<Void> add(@RequestBody IncomeExpenseItem incomeExpenseItem) {
        if (incomeExpenseItem.getTenantId() == null) {
            incomeExpenseItem.setTenantId(1L);
        }
        incomeExpenseItemMapper.insert(incomeExpenseItem);
        return Result.success();
    }

    /**
     * 修改收支项目
     */
    @PutMapping("/update")
    public Result<Void> update(@RequestBody IncomeExpenseItem incomeExpenseItem) {
        incomeExpenseItemMapper.updateById(incomeExpenseItem);
        return Result.success();
    }

    /**
     * 删除收支项目
     */
    @DeleteMapping("/delete/{id}")
    public Result<Void> delete(@PathVariable Long id) {
        incomeExpenseItemMapper.deleteById(id);
        return Result.success();
    }

    /**
     * 批量删除收支项目
     */
    @DeleteMapping("/batchDelete")
    public Result<Void> batchDelete(@RequestBody java.util.List<Long> ids) {
        incomeExpenseItemMapper.deleteBatchIds(ids);
        return Result.success();
    }
}
